import { saveAs } from 'file-saver';
import * as XLSX from 'xlsx';
 
export function exportToExcel(data, fileName) {
  // 创建工作簿
  const wb = XLSX.utils.book_new();
  
  // 将数据转换为工作表
  const ws = XLSX.utils.json_to_sheet(data);
  
  // 将工作表添加到工作簿
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
  
  // 生成Excel的配置项
  const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
  
  // 创建二进制对象并创建url
  const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
  const url = URL.createObjectURL(blob);
  
  // 使用file-saver保存文件
  saveAs(blob, fileName + '.xlsx');
  
  // 通过创建的URL下载文件
  const a = document.createElement('a');
  if (typeof a.download === 'undefined') {
    window.location = url;
  } else {
    a.href = url;
    a.download = fileName + '.xlsx';
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  }
  
  // 清除对象URL
  setTimeout(function() { URL.revokeObjectURL(url); }, 100);
}
 
// 转换字符串为ArrayBuffer
function s2ab(s) {
  const buf = new ArrayBuffer(s.length);
  const view = new Uint8Array(buf);
  for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  return buf;
}
 
// 使用示例
// const data = [
//   { name: 'Alice', email: 'alice@example.com' },
//   { name: 'Bob', email: 'bob@example.com' }
// ];
// exportToExcel(data, 'users');